﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using SIGERP_Datos.Properties;
using System.Data;
using SIGERP_Entidades;

namespace SIGERP_Datos
{
    public class HndTiposReclamo
    {
        public static List<TipoReclamo> GetAll()
        {
            DataTable tabla = Conexion.ejecutaSelect("SELECT * FROM dbo.tipo_reclamo");
            var tiposreclamo = new List<TipoReclamo>();
            foreach (DataRow dtRow in tabla.Rows)
            {
                TipoReclamo tr = new TipoReclamo(dtRow);
                
                tiposreclamo.Add(tr);
            }
            return tiposreclamo;
        }

        public static List<TipoReclamo> GetAllEnabled()
        {
            DataTable tabla = Conexion.ejecutaSelect("SELECT * FROM dbo.tipo_reclamo WHERE habilitado=1 ORDER BY descripcion");
            var tiposreclamo = new List<TipoReclamo>();
            foreach (DataRow dtRow in tabla.Rows)
            {
                TipoReclamo tr = new TipoReclamo(dtRow);
                tiposreclamo.Add(tr);
            }
            return tiposreclamo;
        }

        public static TipoReclamo GetOne(int id)
        {
            DataTable tabla = Conexion.ejecutaSelect("SELECT * FROM dbo.tipo_reclamo WHERE id_tipo_reclamo=" + id);
            DataRow dtRow = tabla.Rows[0];
            TipoReclamo tr = new TipoReclamo(dtRow);
            return tr;
        }

        public static int Insert(TipoReclamo tiporeclamo)
        {

            SqlCommand comando = new SqlCommand();
            comando.CommandText = "INSERT INTO dbo.tipo_reclamo(descripcion,habilitado)" + " OUTPUT INSERTED.id_tipo_reclamo VALUES (@descripcion,1)";
            comando.Parameters.AddWithValue("@descripcion", tiporeclamo.descripcion);

            return Conexion.ejecutaTraeId(comando);
        }

        public static void Update(TipoReclamo tiporeclamo)
        {

            SqlCommand comando = new SqlCommand();
            comando.CommandText = "UPDATE dbo.tipo_reclamo SET descripcion=@descripcion,habilitado=@habilitado WHERE id_tipo_reclamo=@id";
            comando.Parameters.AddWithValue("@descripcion", tiporeclamo.descripcion);
            if (tiporeclamo.habilitado) comando.Parameters.AddWithValue("@habilitado", 1);
            else comando.Parameters.AddWithValue("@habilitado", 0);
            comando.Parameters.AddWithValue("@id", tiporeclamo.id);

            Conexion.ejecutaComando(comando);
        }

        public static void Delete(TipoReclamo tiporeclamo)
        {
            SqlCommand comando = new SqlCommand();
            comando.CommandText = "delete from tipo_reclamo where id_tipo_reclamo=@id";
            comando.Parameters.AddWithValue("@id", tiporeclamo.id);

            Conexion.ejecutaComando(comando);
        }

        public static bool verificarSiExiste(string descripcion_tipo)
        {
            DataTable tabla = Conexion.ejecutaSelect("SELECT COUNT(*) FROM tipo_reclamo WHERE descripcion='" + descripcion_tipo + "'");
            DataRow dtRow = tabla.Rows[0];

            bool existe = false;
            if (Convert.ToInt32(dtRow[0]) > 0) existe = true;
            return existe;
        }

        public static bool verficarSiHaySubtiposAsociados(TipoReclamo tr)
        {
            DataTable tabla = Conexion.ejecutaSelect("SELECT COUNT(*) FROM dbo.subtipo_reclamo WHERE descripcion<>'OTROS' AND id_tipo_reclamo=" + tr.id);
            DataRow dtRow = tabla.Rows[0];

            bool existe = false;
            if (Convert.ToInt32(dtRow[0]) > 0) existe = true;
            return existe;
        }

        public static Boolean disable(TipoReclamo tr)
        {
            SqlCommand comando = new SqlCommand();
            comando.CommandText = "UPDATE dbo.tipo_reclamo SET habilitado=0 WHERE id_tipo_reclamo=@id";
            comando.Parameters.AddWithValue("@id", tr.id);

            return Conexion.ejecutaComando(comando);
        }


    }
}
